package cn.com.bluemoon.daps.system.service;

import cn.com.bluemoon.daps.common.domain.ResultBean;
import cn.com.bluemoon.daps.common.mp.IBmService;
import cn.com.bluemoon.daps.system.dto.DatasourceDto;
import cn.com.bluemoon.daps.system.entity.DapSystemDatasource;
import cn.com.bluemoon.daps.system.vo.SysDatasourceVo;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.util.List;
import java.util.Optional;

/**
 * <p>
 * 系统数据源表 服务类
 * </p>
 *
 * @author admin
 * @since 2020-08-03
 */
public interface DapSystemDatasourceService extends IBmService<DapSystemDatasource> {

    /**
     * 带模糊搜索的分页查询
     * @param pageSize
     * @param pageNum
     * @param sourceName
     * @return
     */
    IPage<DapSystemDatasource> getDatasourcePageList(Integer pageSize, Integer pageNum, String sourceName);

    /**
     * 查询所有未被其他系统引用的数据源信息
     * @param sysId
     * @return
     */
    List<DapSystemDatasource> getAllDatasource(String sysId);

    /**
     * 新增系统时该数据源被引用
     * @param ids
     * @param systemId
     * @return
     */
    boolean isUse(List<String> ids, String systemId);

    /**
     * 查询单个系统所引用的数据源
     * @return
     */
    List<DapSystemDatasource> getUseDatasource(String systemId);

    /**
     * 新增数据源
     */
    ResultBean<Boolean> insertDatasource(DapSystemDatasource dapSystemDatasource);

    /**
     * 删除数据源(可批量)
     * @param ids
     * @return
     */
    ResultBean<Boolean> deleteBatchSource(List<String> ids);

    /**
     * 获取数据源（带缓存）
     *
     * @param id
     * @return
     */
    Optional<DapSystemDatasource> getCacheOneById(String id);


    /**
     * v1.3 版本 获取数据源以及数据源环境信息
     * @param id
     * @return
     */
    DatasourceDto getDatasourceInfo(String id);


    /**
     * 查询数据源列表
     * @param ids
     * @return
     */
    List<DatasourceDto> getDatasourceInfoList(List<String> ids);


    IPage<SysDatasourceVo> datasourcePage(Integer pageSize, Integer pageNum, String sourceName);
}
